<?php

namespace Model;



class LoginHandler {
	
        const Username = "Username";
		const Password = "Password";
		
		private $m_db = NULL;
        
        public function __construct(Database $db) {
                $this->m_db =$db;
        }
		
        /*public function IsLoggedIn() {
        	//returnerar true om vi är inloggade annars false
        	
        	//Ser om det finns sparade cookies och försöker isåfall logga in med de uppgifterna
			if (isset($_COOKIE["username"]) && isset($_COOKIE["password"])){
					$salt = 'mysalt';	
					$username = $_COOKIE["username"];
				    $decryptedUsername = $loginView->decrypt($username, $salt);
					$password = $_COOKIE["password"];
					$decryptedPassword = $loginView->decrypt($password, $salt);
					if($this->DoLogin($decryptedUsername, $decryptedPassword)){
						return true;
					}
			} else {
				return false;
			}
			
		}*/
		
 		public function IsLoggedIn(){
 		//returnerar true om vi är inloggade annars false	
 			if(isset($_SESSION[self::Username])) {
 				return true;
			}
			return false;
 		}
	
		//Kontrollerar uppgifterna och loggar in användaren
        public function DoLogin($username, $password){
        	
			$sql = "SELECT m_username, m_password FROM user WHERE m_username=? AND m_password=?";
	  			
			$stmt = $this->m_db->Prepare($sql);
			
            $stmt -> bind_param("ss", $username, $password);
			
			$stmt -> execute();
            
			if ($stmt->bind_result($username, $password) == FALSE) {
                throw new \Exception($this->mysqli->error);
        	}

            while ($stmt->fetch()) {
                    
				$_SESSION[self::Username] = $username;	
                return true;
				$stmt -> close();
            } 
            return false;
            $stmt -> close();
			
        }
		
		//Loggar ut användraen
        public function DoLogout(){
        	unset($_SESSION[self::Username]);
        }
 		
        public function Test($db) {
        	
			$sut = new LoginHandler($db);	
        		
        	//sätter oss i ett utloggat tillstånd genom att anropa DoLogout
            $sut->DoLogout();
               
			//Test IsLoggedIn
		    if ($sut-> IsLoggedIn() == true){
		   	   echo "Fel på IsLoggedIn";
			   return false;
		    }
		    //Test IsLoggedIn2
		    if ($sut-> IsLoggedIn2() == true){
		   	   echo "Fel på IsLoggedIn2";
			   return false;
		    }
			   
			//Test DoLogin med felaktiga uppgifter
			if ($sut-> DoLogin("nehopp", "password") == true){
			   	echo "Fel på doLogin";
				return false;
			}
			
			//Test DoLogin med rätta uppgifter
			if ($sut-> DoLogin("stina", "stora222") == false){
			   	echo "Fel på doLogin";
				return false;
			}
			   
			//Kontrollerar om vi är inloggade
			if ($sut->IsLoggedIn2() == false){
			   	echo "Fel på IsLoggedIn2";
				return false;
			}
			   
			return true;
			   
		}
}